package com.liu.common.bean;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.logging.log4j.message.ReusableMessage;

import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;


public class Page {

    @ApiModelProperty("当前页，默认为第一页")
    int page =1;//当前页
    @ApiModelProperty("每页记录数，默认为10")
    int pageSize =10;//每页记录数

    public int getPage() {
        return page;
    }

    public void setPage(int page) {
        if(page==0)
            this.page=1;
        else
            this.page = page;
    }

    public int getPageSize() {
        return pageSize;
    }

    public void setPageSize(int pageSize) {
        if(pageSize==0)
            this.pageSize=10;
        else
            this.pageSize = pageSize;
    }

    public Map toMap(){

        Class sup=this.getClass().getSuperclass();
        //先获取父类的
        Map parentMap = converttoMap(this.getClass().getSuperclass());
        //子类的
        Map chiledMap = converttoMap(this.getClass());
        parentMap.putAll(chiledMap);
        return parentMap;
    }

    /**
     * 获取当前类的所有字段 并转换为map
     * @param clazz
     * @return
     */
    Map converttoMap(Class clazz){
        Map map = new HashMap();
        //利用反射获取当前类的所有字段
        Field[] fields = clazz.getDeclaredFields();
        for (Field f : fields) {
            //设置字段访问，设置为true 私有的也可以访问
            f.setAccessible(true);
            //获取字段的名称
            String key = f.getName();
            //获取该字段的值
            Object value =null;
            try {
                value = f.get(this);
            }catch(IllegalAccessException e){
                throw new RuntimeException(e);
            }
            map.put(key,value);
        }
        return map;
    }

}
